<?php

namespace App\Utils;

/**
 * 与 Java 兼容的 Aes 加密解密类库，采用 CBC 加密
 * https://my.oschina.net/u/3403514/blog/1809008
 * aes 加密 解密类库
 * Class Aes
 */
class AESUtil
{
    //密钥 须是16位
    private static string $key = "sV3KOjKoPhT8qTtq";

    //偏移量
    private static string $iv = 'sV3KOjKoPhT8qTtq';

    /**
     * 解密字符串
     * @param string $str
     * @param string $key
     * @return false|string
     */
    public static function decrypt(string $str, string $key = "sV3KOjKoPhT8qTtq"): bool|string
    {
        return openssl_decrypt(base64_decode($str), "AES-128-CBC", $key,
            OPENSSL_RAW_DATA, $key);
    }

    /**
     * 加密字符串
     * @param string $str 字符串
     * @param string $key
     * @return string
     */
    public static function encrypt(string $str, string $key = "sV3KOjKoPhT8qTtq"): string
    {
        return base64_encode(openssl_encrypt($str, "AES-128-CBC", $key,
            OPENSSL_RAW_DATA, $key));
    }

    /**
     * ecb 加密方式加密
     * @param string $str
     * @param $key
     * @return false|string
     */
    public static function ecbEncrypt(string $str, $key): bool|string
    {
        return openssl_encrypt($str, 'AES-128-ECB', $key);
    }
}
